package com.hisense.hisensedatacheck.service.impl;

import com.hisense.hisensedatacheck.dao.FrXzxkxxMapper;
import com.hisense.hisensedatacheck.dao.ZrrXzcfxxMapper;
import com.hisense.hisensedatacheck.dao.ZrrXzxkxxMapper;
import com.hisense.hisensedatacheck.entity.FrXzxkxx;
import com.hisense.hisensedatacheck.service.FrXzxkxxVerifyService;
import com.hisense.hisensedatacheck.uitls.Verify;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class FrXzxkxxVerifyServiceImpl implements FrXzxkxxVerifyService {
    @Autowired
    private FrXzxkxxMapper frXzxkxxMapper;

    //法人行政许可信息
    @Override
    public void frXzxkxxVerify() {
        //        操作状态修改
        frXzxkxxMapper.updateOperation();
        List<FrXzxkxx> frXzxkxxes = frXzxkxxMapper.selectAll();
        ArrayList<FrXzxkxx> updateFrXzxkxx = new ArrayList<>();
        for (FrXzxkxx frXzxkxx : frXzxkxxes) {
            List<String> errors = new ArrayList<String>();
            if (Verify.isWenHao(frXzxkxx.getXkXdrMc())) {
                errors.add("“行政相对人名称”包含中英文问号;");
            }
            if (Verify.isShugGangAndXieGangAndNull(frXzxkxx.getXkXdrMc())) {
                errors.add("“行政相对人名称”不能为空或包含|/\\符号;");
            }
            if (Verify.isNullOrTrueOrXingHao(frXzxkxx.getXkXdrMc())) {
                errors.add("“行政相对人名称”不得包含*或null或test;");
            } else if (Verify.isZiFuChangDu(frXzxkxx.getXkXdrMc())) {
                errors.add("“行政相对人名称”不得包含*或null或test，且长度必须大于一个汉字或大于三个字符;");
            }
            //“行政相对人类别”为法人及非法人组织或个体工商户时
            if (!Verify.isXzxdrlb(frXzxkxx.getXkXdrLb())) {
                if (Verify.isTyshxydm(frXzxkxx.getXkXdrShxym())) {
                    errors.add("“行政相对人类别”为法人及非法人组织或个体工商户时，“统一社会信用代码”校验错误;");
                }
                if (Verify.isTyshxydmAndGszch(frXzxkxx.getXkXdrShxym(), frXzxkxx.getXkXdrGszc())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户，且统一社会信用代码为17个0+X时，“工商注册号”必填;");
                } else if (Verify.isTyshxydmAndGszchSize(frXzxkxx.getXkXdrShxym(), frXzxkxx.getXkXdrGszc())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户，且统一社会信用代码为17个0+X时，““工商注册号”长度超过50个字符;");
                }
                if (Verify.isNullOrTrueOrXingHao(frXzxkxx.getXkFrdb())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，“法定代表人”不得包含*或null或test或中英文问号，且长度必须大于一个汉字或大于三个字符;");
                } else if (Verify.isZiFuChangDu(frXzxkxx.getXkFrdb())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，“法定代表人”不得包含*或null或test或中英文问号，且长度必须大于一个汉字或大于三个字符;");
                }
                if (Verify.isShuZi(frXzxkxx.getXkFrdb())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，“法定代表人”不得包含数字;");
                }
                if (Verify.isShuZi(frXzxkxx.getXkFrZjhm(), frXzxkxx.getXkFrZjlx())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，且法定代表人证件号码不为空时，“法定代表人证件类型”必填;");
                }
                if (!Verify.isNull(frXzxkxx.getXkXdrZjlx())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时,“证件类型”必须为空;");
                }
                if (!Verify.isNull(frXzxkxx.getXkXdrZjhm())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时,“证件号码”必须为空;");
                }
            }

            if (Verify.isZhongWen(frXzxkxx.getXkXdrGszc())) {
                errors.add("“工商注册号”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzxkxx.getXkXdrGszc())) {
                errors.add("“工商注册号”含有除数字或字母之外的字符;");
            }
            if (Verify.isZhongWen(frXzxkxx.getXkXdrZzjg())) {
                errors.add("“组织机构代码”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzxkxx.getXkXdrZzjg())) {
                errors.add("“组织机构代码”含有除数字或字母之外的字符;");
            }
            if (Verify.isZhongWen(frXzxkxx.getXkXdrSwdj())) {
                errors.add("“税务登记号”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzxkxx.getXkXdrSwdj())) {
                errors.add("“税务登记号”含有除数字或字母之外的字符;");
            }
            if (Verify.isZhongWen(frXzxkxx.getXkXdrSydw())) {
                errors.add("“事业单位证书号”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzxkxx.getXkXdrSydw())) {
                errors.add("“事业单位证书号”含有除数字或字母之外的字符;");
            }
            if (Verify.isZhongWen(frXzxkxx.getXkXdrShzz())) {
                errors.add("“社会组织登记证号”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzxkxx.getXkXdrShzz())) {
                errors.add("“社会组织登记证号”含有除数字或字母之外的字符;");
            }
            if (!Verify.isNull(frXzxkxx.getXkFrZjlx()) && Verify.isNull(frXzxkxx.getXkFrZjhm())) {
                errors.add("“法定代表人证件类型”不为空时，身份证号码必填;");
            }
            if (Verify.isNull(frXzxkxx.getXkFrZjlx()) && !Verify.isNull(frXzxkxx.getXkFrZjhm())) {
                errors.add("“法定代表人证件类型”为空时，“法定代表人证件号码”必须为空;");
            }
            if (Verify.isNull(frXzxkxx.getXkXkws())) {
                errors.add("“行政许可决定文书名称”为必填项;");
            } else if (Verify.isLength(frXzxkxx.getXkXkws(), 64)) {
                errors.add("“行政许可决定文书名称”长度超过64个字符;");
            }
            if (Verify.isNull(frXzxkxx.getXkWsh())) {
                errors.add("“行政许可决定文书号”为必填项;");
            } else if (Verify.isNullOrTrueOrXingHao(frXzxkxx.getXkWsh())) {
                errors.add("“行政许可决定文书号”不得包含*或null或test;");
            }
            if (Verify.xuKeLeiBieJiaoYan(frXzxkxx.getXkXklb())) {
                errors.add("许可类别为“其他”时，许可类别格式为“其他-具体类别”;");
            }
            if (Verify.riQiPanDuan(frXzxkxx.getXkJdrq(), new Date())) {
                errors.add("“许可决定日期”不可超过当前日期;");
            }
            if (Verify.riQiPanDuan(frXzxkxx.getXkYxqz(), frXzxkxx.getXkYxqzi())) {
                errors.add("“有效期至”不可小于“有效期自”;");
            }
            if (Verify.isTyshxydm(frXzxkxx.getXkXkjgdm())) {
                errors.add("“许可机关统一社会信用代码”校验错误;");
            }
            if (Verify.isTyshxydm(frXzxkxx.getXkLydwdm())) {
                errors.add("单位统一社会信用代码”校验错误;");
            }
            if (Verify.yiWenShuJu(frXzxkxx.getXkXkjgdm()) || Verify.yiWenShuJu(frXzxkxx.getXkLydwdm())) {
                errors.add("疑问数据（决定机关代码/数据来源单位代码）;");
            }
            if (!(frXzxkxx.getCdOperation().equals("I") || frXzxkxx.getCdOperation().equals("U") || frXzxkxx.getCdOperation().equals("D"))) {
                errors.add("“cd_operation（操作状态）”字段取值范围错误;");
            }
            if (errors.size() != 0) {
                frXzxkxx.setErrorData(errors.toString());
                updateFrXzxkxx.add(frXzxkxx);
            }
        }
        //保存修改
        if (updateFrXzxkxx.size() != 0) {
            System.out.println("修改条数:"+updateFrXzxkxx.size());
            frXzxkxxMapper.updateErrorByIds(updateFrXzxkxx);
        }
        System.out.println("法人行政许可执行完毕");
    }
}
